import { VxeGlobalRendererHandles } from "../../../../../types/all";
import XEUtils from "xe-utils";
import { createEditRender, createCellRender, isEmptyValue, createFormItemRender, createExportMethod } from "./common";

function getTreeSelectCellValue(renderOpts: VxeGlobalRendererHandles.RenderOptions, params: VxeGlobalRendererHandles.RenderCellParams | VxeGlobalRendererHandles.ExportMethodParams) {
    const { props = {} } = renderOpts;
    const { treeData, treeCheckable } = props;
    const { row, column } = params;
    const cellValue = XEUtils.get(row, column.field as string);
    if (!isEmptyValue(cellValue)) {
        return XEUtils.map(treeCheckable ? cellValue : [cellValue], (value) => {
            const matchObj = XEUtils.findTree(treeData, (item: any) => item.value === value, {
                children: "children",
            });
            return matchObj ? matchObj.item.title : value;
        }).join(", ");
    }
    return cellValue;
}

export default {
    renderEdit: createEditRender(),
    renderCell: createCellRender(getTreeSelectCellValue),
    renderItemContent: createFormItemRender(),
    exportMethod: createExportMethod(getTreeSelectCellValue),
};
